home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / source code vol 1.adf / BLITTERROUTS / SHORTBOB.S < prev    next >
Text File  |  1999-09-26  |  6KB  |  339 lines

  1. SHORT BOB BY PSYCHO OF DOMINATORS
  2.  
  3. start:
  4.     MOVE.L    #$DFF000,A5
  5.     jsr    INITIALIZE(pc)
  6.     jsr    setcolors(pc)
  7.     jsr    setup_copperlist(pc)
  8.     jsr    setupscreen(pc)
  9.     jsr    show_background(pc)
  10.     jsr    calc_cursorpos(pc)
  11.     jsr    movebrush(pc)
  12. main_loop:
  13.     jsr    movebrush(pc)
  14.     BTST    #6,$BFE001
  15.     bne    main_loop
  16.     jsr    RESTORE(pc)
  17.     rts
  18.  
  19. picx=320 ; pixels
  20. picy=256 ; pixels
  21. antal_farver=32
  22. antal_bpl=5
  23. antal_bobbpl=3
  24. brushx=32 ; pixels
  25. brushy=16 ; pixels
  26.  
  27. picxword=picx/16
  28. picxbyte=picx/8
  29. bplsize=picxbyte*picy
  30. picsize=bplsize*antal_bpl
  31.  
  32. brushxword=brushx/16
  33. brushxbyte=brushx/8
  34. brushsize=brushxbyte*brushy
  35.  
  36.  
  37. CloseLib=-414
  38. ExecBase=4
  39. OpenLib=-408
  40.  
  41. BLTCPTH=$048
  42. BLTBPTH=$04c
  43. BLTAPTH=$050
  44. BLTDPTH=$054
  45. BLTCMOD=$060
  46. BLTBMOD=$062
  47. BLTAMOD=$064
  48. BLTDMOD=$066
  49. BLTCON0=$040
  50. BLTCON1=$042
  51. BLTSIZE=$058
  52. BPL1MOD=$108
  53. BPLCON0=$100
  54. BPLCON1=$102
  55. COP1LCH=$080
  56. COPJMP1=$088
  57. DDFSTRT=$092
  58. DDFSTOP=$094
  59. DIWSTRT=$08e
  60. DIWSTOP=$090
  61. DMACON= $096
  62. DMACONR=$002
  63.  
  64.  
  65. setcolors:
  66.     move.l   #collist,a0
  67.        move.l   #colour1+2,a1
  68.        move.w   #antal_farver-1,d0
  69. fill2:  move.w   (a0)+,(a1)
  70.         adda.l   #4,a1
  71.         dbf        d0,fill2
  72.         rts   
  73.  
  74.  
  75. setup_copperlist:
  76.     move.l    #bpl1,d0
  77.     move.w    d0,LO1+2
  78.     lsr.l    #8,d0
  79.     lsr.l    #8,d0
  80.     move.w    d0,HI1+2
  81.     move.l    #bpl2,d0
  82.     move.w    d0,LO2+2
  83.     lsr.l    #8,d0
  84.     lsr.l    #8,d0
  85.     move.w    d0,HI2+2
  86.     move.l    #bpl3,d0
  87.     move.w    d0,LO3+2
  88.     lsr.l    #8,d0
  89.     lsr.l    #8,d0
  90.     move.w    d0,HI3+2
  91.     move.l    #bpl4,d0
  92.     move.w    d0,LO4+2
  93.     lsr.l    #8,d0
  94.     lsr.l    #8,d0
  95.     move.w    d0,HI4+2
  96.     move.l    #bpl5,d0
  97.     move.w    d0,LO5+2
  98.     lsr.l    #8,d0
  99.     lsr.l    #8,d0
  100.     move.w    d0,HI5+2
  101.     rts
  102.  
  103. show_background:
  104.     move.b    #antal_bpl,d0
  105.     move.w    #picxword,d1
  106.     move.w    #picy,d2
  107.     move.w    #0,d3
  108.     move.w    #0,d4
  109.     move.l    #picbuffer,a0
  110.     move.l    #screenbuffer,a1
  111.     jsr    SHOWSCREEN(pc)
  112.     rts
  113.  
  114. calc_cursorpos:
  115.     move.l    #0,a0
  116.     move.w    xpos(pc),d2
  117.     divu    #8,d2
  118.     move.w    xpos(pc),d3
  119.     andi.w    #$000f,d3
  120.     lsr.l    #8,d3
  121.     lsr.l    #8,d3
  122.     lsr.l    #8,d3
  123.     adda.w    d2,a0
  124.     move.w    d3,smoothxpos
  125.     move.w    ypos(pc),d2
  126.     mulu    #40,d2
  127.     adda.l    d2,a0
  128.     move.l    a0,cursor_position
  129.     rts
  130.  
  131. restorebehind_brush1:
  132.     move.b    #antal_bobbpl,d0
  133.     move.w    #brushxword,d1
  134.     move.w    #brushy,d2
  135.     move.w    #picxbyte-brushxbyte,d3
  136.     move.w    #picxbyte-brushxbyte,d4
  137.     move.l    #picbuffer1,a0
  138.     addi.l    cursor_position(pc),a0
  139.     move.l    cursor_position(pc),a1
  140.     addi.l    #bpl1,a1
  141.     jsr    SHOWSCREEN(pc)
  142.     rts
  143.  
  144.  
  145. show_brush1:
  146.     move.b    #antal_bobbpl,d0
  147.     move.w    #brushxword,d1
  148.     move.w    #brushy,d2
  149.     move.w    #0,d3
  150.     move.w    #picxbyte-brushxbyte,d4
  151.     move.w    smoothxpos(pc),d5
  152.     move.l    #brush1,a0
  153.     move.l    cursor_position(pc),a1
  154.     addi.l    #bpl1,a1
  155.     move.l    #brushmask1,a2
  156.     jsr    SHOWBRUSH(pc)
  157.     rts
  158. movebrush:
  159. movebrush_wait:
  160.     cmp.b    #$D0,$006(a5)
  161.     bne    movebrush_wait
  162.     move.w    #$8400,DMACON(A5)
  163.     jsr    restorebehind_brush1(pc)
  164.     jsr    calc_cursorpos(pc)
  165.     jsr    show_brush1(pc)
  166.     move.w    #$0400,DMACON(A5)
  167.     move.b    $006(a5),$100
  168.     rts
  169.  
  170. setupscreen:
  171.     move.w    #$8100,DMACON(A5)
  172.     move.w    #$8040,DMACON(A5)
  173.     move.w    #$0020,DMACON(A5)
  174.  
  175.     move.w    #antal_bpl,d0
  176.     mulu    #$1000,d0
  177.     ori.w    #$0280,d0
  178.     move.w    d0,BPLCON0(A5)
  179.     move.w    #0,BPLCON1(A5)
  180.     move.w    #0,BPL1MOD(A5)
  181.     move.w    #$0080,DMACON(A5)
  182.     move.l    #copperlist,COP1LCH(A5)
  183.     move.w    COPJMP1(A5),d0
  184.     move.w    #$8080,DMACON(A5)
  185.     rts
  186.  
  187. startlist=38
  188.  
  189. INITIALIZE:
  190.     move.l    execbase.w,a6
  191.     MOVE.W    #$7FFF,$09A(A5)
  192.     rts
  193.  
  194. RESTORE:
  195.     move.l    execbase.W,a6
  196.     move.w    #$000f,DMACON(A5)
  197.     lea    graphics_library(pc),a1
  198.     clr.l    d0
  199.     jsr    openlib(a6)
  200.     move.l    d0,a1
  201.     move.l    startlist(a1),COP1LCH(A5)
  202.     clr.w    COPJMP1(A5)
  203.     move.w    #$83e0,DMACON(A5)
  204.     jsr    closelib(a6)
  205.     MOVE.W    #$4000,$09A(A5)
  206.     MOVE.W    #$E02C,$09A(A5)
  207.     rts
  208.  
  209. graphics_library:    dc.b    'graphics.library',0
  210. even
  211.  
  212. SHOWBRUSH:
  213.     move.w    d1,d7
  214.     mulu    d2,d7
  215.     mulu    #2,d7
  216.     move.w    d2,d6
  217.     mulu    #64,d6
  218.     addi.w    d1,d6
  219. showbrush_wait:
  220.     btst    #14,DMACONR(A5)
  221.     bne    showbrush_wait
  222.     move.l    a2,BLTAPTH(A5)
  223.     move.l    a0,BLTBPTH(A5)
  224.     move.l    a1,BLTCPTH(A5)
  225.     move.l    a1,BLTDPTH(A5)
  226.     move.w    d3,BLTAMOD(A5)
  227.     move.w    d3,BLTBMOD(A5)
  228.     move.w    d4,BLTCMOD(A5)
  229.     move.w    d4,BLTDMOD(A5)
  230.     andi.w    #$f000,d5
  231.     move.w    d5,BLTCON1(A5)
  232.     ori.w    #$0fca,d5
  233.     move.w    d5,BLTCON0(A5)
  234.     move.w    d6,BLTSIZE(A5)
  235.     MOVE.L    #$FFFFFFFF,$044(a5)
  236.     addi.l    d7,a0        ; HUSK
  237.     addi.l    #bplsize,a1    ; HUSK
  238.     subi.b    #1,d0
  239.     bne    showbrush_wait
  240.     rts
  241.  
  242. SHOWSCREEN:
  243.     move.w    d1,d7
  244.     mulu    d2,d7
  245.     mulu    #2,d7
  246.     move.w    d2,d6
  247.     mulu    #64,d6
  248.     addi.w    d1,d6
  249. showscreen_wait:
  250.     btst    #14,DMACONR(A5)
  251.     bne    showscreen_wait
  252.     move.l    a0,BLTAPTH(A5)
  253.     move.l    a1,BLTDPTH(A5)
  254.     move.w    d3,BLTAMOD(A5)
  255.     move.w    d4,BLTDMOD(A5)
  256.     move.w    #$0000,BLTCON1(A5)
  257.     move.w    #$09f0,BLTCON0(A5)
  258.     move.w    d6,BLTSIZE(A5)
  259.     addi.l    #bplsize,a0
  260.     addi.l    #bplsize,a1    
  261.     subi.b    #1,d0
  262.     bne    showscreen_wait
  263.     rts
  264.  
  265. cursor_position:    dc.l    picxbyte*16
  266. shadow_position:    dc.l    0
  267. xpos:            dc.w    160
  268. ypos:            dc.w    100
  269. smoothxpos:        dc.w    0
  270.  
  271. copperlist:
  272.     dc.w    $008e,$2c81
  273.     dc.w    $0090,$f9c1
  274.     dc.w     $0092,$0038
  275.     dc.w    $0094,$00d0
  276.     dc.w    $0100,$5200
  277. HI1:    dc.w    $00e0,0
  278. LO1:    dc.w    $00e2,0
  279. HI2:    dc.w    $00e4,0
  280. LO2:    dc.w    $00e6,0
  281. HI3:    dc.w    $00e8,0
  282. LO3:    dc.w    $00ea,0
  283. HI4:    dc.w    $00ec,0
  284. LO4:    dc.w    $00ee,0
  285. HI5:    dc.w    $00f0,0
  286. LO5:    dc.w    $00f2,0
  287. colour1:
  288.     dc.w    $0180,$0000
  289.     dc.w    $0182,$0000
  290.     dc.w    $0184,$0000
  291.     dc.w    $0186,$0000
  292.     dc.w     $0188,$0000
  293.     dc.w    $018a,$0000
  294.     dc.w    $018c,$0000
  295.     dc.w    $018e,$0000
  296.     dc.w    $0190,$0000
  297.     dc.w    $0192,$0000
  298.     dc.w     $0194,$0000
  299.     dc.w    $0196,$0000
  300.     dc.w    $0198,$0000
  301.     dc.w    $019a,$0000
  302.     dc.w    $019c,$0000
  303.     dc.w    $019e,$0000
  304.     dc.w    $01a0,$0000
  305.     dc.w    $01a2,$0000
  306.     dc.w     $01a4,$0000
  307.     dc.w    $01a6,$0000
  308.     dc.w    $01a8,$0000
  309.     dc.w    $01aa,$0000
  310.     dc.w    $01ac,$0000
  311.     dc.w    $01ae,$0000
  312.     dc.w    $01b0,$0000
  313.     dc.w    $01b2,$0000
  314.     dc.w     $01b4,$0000
  315.     dc.w    $01b6,$0000
  316.     dc.w    $01b8,$0000
  317.     dc.w    $01ba,$0000
  318.     dc.w    $01bc,$0000
  319.     dc.w    $01be,$0000
  320.     dc.w    $ffff,$fffe    ;end copper list
  321.  
  322. brush1:        blk.b    brushsize*antal_bobbpl,$ff
  323. brushmask1:    blk.b    brushsize,$ff
  324.  
  325. picbuffer:
  326. picbuffer1:    blk.b    bplsize,0
  327. picbuffer2:    blk.b    bplsize,0
  328. picbuffer3:    blk.b    bplsize,0
  329. picbuffer4:    blk.b    bplsize,0
  330. picbuffer5:    blk.b    bplsize,0
  331. collist:     blk.b 64,0
  332. screenbuffer:
  333. bpl1:        blk.b    bplsize,0
  334. bpl2:        blk.b    bplsize,0
  335. bpl3:        blk.b    bplsize,0
  336. bpl4:        blk.b    bplsize,0
  337. bpl5:        blk.b    bplsize,0
  338. END:
  339.